package main

import (
	"fmt"
	"sync"
)

/*
锁
*/

var wg sync.WaitGroup

func main() {
	/*
	   同步等待组


	   Add（） 设置等待组中药执行的子 foroutine的数量
	   Wait 让主goroutine处于等待
	*/

	wg.Add(1) //如果只有1的话 是随机的拿一个go执行  必须在wait前增加，创建go之前
	go fun1()
	go fun2()

	fmt.Println("main进入阻塞状态")
	wg.Wait()
	fmt.Println("main阻塞结束")
}

func fun1() {
	for i := 1; i < 10; i++ {
		fmt.Println("fun1 输出", i)
	}
	wg.Done() //本质上调用add 给-1
}

func fun2() {
	defer wg.Done()
	for j := 1; j < 10; j++ {
		fmt.Println("fun2 输出", j)
	}

}
